namespace SmartMathLibrary.Simulation.LogicalGate
{
    /// <summary>
    /// Interface to implement a Bit class.
    /// </summary>
    public interface IBit
    {
        /// <summary>
        /// Gets or sets the state of the bit.
        /// </summary>
        /// <value>The state of the bit.</value>
        bool State { get; set; }

        /// <summary>
        /// Compares the current instance of a bit instance to another.
        /// </summary>
        /// <param name="compare">The bit instance to compare.</param>
        /// <returns>True if the bit state is even to the specified bit instance 
        /// otherwise, false</returns>
        bool CompareTo(Bit compare);

        /// <summary>
        /// Copies the current instance.
        /// </summary>
        /// <returns>A copy of the current instance.</returns>
        Bit Copy();
    }
}